package src.main.java.action;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;

import src.main.java.entity.AtendimentoTO;
import src.main.java.modules.container.AtendimentoCaller;
import src.main.java.modules.container.ClientesCaller;

import com.opensymphony.xwork2.ActionSupport;


public class AtendimentoAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, SessionAware {
	
	private HttpServletRequest request;
	private HttpServletResponse response;
	private Map<String, Object> session;
	
	private AtendimentoTO atendimento;
	private String feedback;
	
	@Action(value = "atendimento", results = {
			@Result(location = "atendimento.jsp", name = "sucess")}
	)
	public String telaAtendimento(){
		return "sucess";
	}
	
	@Action(value = "atendimento-consultar", results = {
			@Result(location = "atendimentoConsulta.jsp", name = "sucess")}
	)
	public String telaConsulta(){
		return "sucess";
	}
	
	@Action(value = "atendimento-novo", results = {
			@Result(location = "atendimentoEnviado.jsp", name="sucess"),
			@Result(location= "atendimento.jsp", name="fail")}
	)
	public String novoTicket(){
		
		String cpf = atendimento.getCpf();
		Integer existeCliente = ClientesCaller.verificaCliente(Long.parseLong(cpf));
		if (existeCliente == 0){
			setFeedback("naoExiste");
			return "fail";
		}
		
		Integer codigoAcompanhamento = AtendimentoCaller.criarTicket(atendimento.getCpf(), atendimento.getTexto(), 4, atendimento.getTipo());
		atendimento.setCodigoAcompanhamento(codigoAcompanhamento);
		
		System.out.println("Ticket " + codigoAcompanhamento + " gerado com sucesso");
		
		return "sucess";
	}
	
	@Action(value = "atendimento-consultarTicket", results = {
			@Result(location = "atendimentoHistorico.jsp", name="sucess"),
			@Result(location = "atendimentoConsulta.jsp", name="fail")}
	)
	public String consultaTicket(){
		atendimento = AtendimentoCaller.consultarTicket(atendimento.getCodigoAcompanhamento());
		if(atendimento.getError() != null && atendimento.getError() == 503){
			setFeedback("naoExiste");
			return "fail";
		}
		
		return "sucess";
	}
	
	@Action(value = "atendimento-enviado", results = {
			@Result(location = "atendimentoEnviado.jsp", name = "sucess")}
	)
	public String ticketEnviado(){
		//TODO Chamar Componente ATENDIMENTO -> manda CPF/TEXTO/TIPO
		
		Integer codigoAcompanhamento = AtendimentoCaller.criarTicket(atendimento.getCpf(), atendimento.getTexto(), 4, atendimento.getTipo());
		atendimento.setCodigoAcompanhamento(codigoAcompanhamento);
		
		System.out.println("Ticket " + codigoAcompanhamento + " gerado com sucesso");
		
		request.setAttribute("message","Obrigada pelo contato!");
		request.setAttribute("action", "");
		return "sucess";
	}

	@Override
	public void setServletResponse(HttpServletResponse arg0) {
		this.response = arg0;
	}

	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		this.request = arg0;
	}

	@Override
	public void setSession(Map<String, Object> arg0) {
		this.session = arg0;		
	}

	public AtendimentoTO getAtendimento() {
		return atendimento;
	}

	public void setAtendimento(AtendimentoTO atendimento) {
		this.atendimento = atendimento;
	}

	public String getFeedback() {
		return feedback;
	}

	public void setFeedback(String feedback) {
		this.feedback = feedback;
	}

}
